Linux 命令- cut

        cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。

1. 命令格式

1
cut [参数] [file]

2. 命令功能

        cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

        如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

3. 命令参数

  • -b:仅显示行中指定直接范围的内容;
  • -c:仅显示行中指定范围的字符;
  • -d:指定字段的分隔符,默认的字段分隔符为“TAB”;
  • -f:显示指定字段的内容;
  • -n:与“-b”选项连用,不分割多字节字符;
  • –complement:补足被选择的字节、字符或字段;
  • –out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
  • –help:显示指令的帮助信息
  • –version:显示指令的版本信息。

4. 使用实例

实例1:截取文件其中一个字符

        命令

1
cut -c2 /etc/passwd

        输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost ~]# cut -c2 /etc/passwd
o
i
a
d
p
y
h
a
a
p
a
t
o
y
y
b
o
s
o
s
h

        说明

        提取第2个字符

实例2:截取文件多个字符

        命令

1
cut -c2-5,10 /etc/passwd

        输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost ~]# cut -c2-5,10 /etc/passwd
oot:0
in:x:
aemo2
dm:x:
p:x:l
ync:0
hutdx
alt:0
ail:1
perax
ames2
tp:x5
obod9
ysteu
ystee
bus::
olki:
ss:x5
ostf:
shd::
hron9

        说明

        提取第2、第3、第4、第5和第10个字符

实例3:提取前4个字符

        命令

1
cut -c-4 /etc/passwd

        输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost ~]# cut -c-4 /etc/passwd
root
bin:
daem
adm:
lp:x
sync
shut
halt
mail
oper
game
ftp:
nobo
syst
syst
dbus
polk
tss:
post
sshd
chro

实例4:打印从第10个字符开始到结尾

        命令

1
cut -c10- /etc/passwd

        输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost ~]# cut -c5- /etc/passwd
:x:0:0:root:/root:/bin/bash
x:1:1:bin:/bin:/sbin/nologin
on:x:2:2:daemon:/sbin:/sbin/nologin
x:3:4:adm:/var/adm:/sbin/nologin
:4:7:lp:/var/spool/lpd:/sbin/nologin
:x:5:0:sync:/sbin:/bin/sync
down:x:6:0:shutdown:/sbin:/sbin/shutdown
:x:7:0:halt:/sbin:/sbin/halt
:x:8:12:mail:/var/spool/mail:/sbin/nologin
ator:x:11:0:operator:/root:/sbin/nologin
s:x:12:100:games:/usr/games:/sbin/nologin
x:14:50:FTP User:/var/ftp:/sbin/nologin
dy:x:99:99:Nobody:/:/sbin/nologin
emd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
emd-network:x:192:192:systemd Network Management:/:/sbin/nologin
:x:81:81:System message bus:/:/sbin/nologin
itd:x:998:996:User for polkitd:/:/sbin/nologin
x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
fix:x:89:89::/var/spool/postfix:/sbin/nologin
:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
ny:x:997:995::/var/lib/chrony:/sbin/nologin

实例5:用 -f 提取指定字段,-d 指定分隔符

        命令

1
2
cut -f1 -d" " test.txt
cut -f2,3 -d" " test.txt

        输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
[root@localhost ~]# cut -f1 -d" " test.txt
No
01
02
03
[root@localhost ~]# cut -f2,3 -d" " test.txt
Name Mark
tom 69
jack 71
alex 68

实例6:使用 –complement 提取指定字段之外的列

        命令

1
cut -f2 -d" " --complement test.txt

        输出

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
[root@localhost ~]# cut -f2 -d" " --complement test.txt
No Mark Percent
01 69 91
02 71 87
03 68 98